aboutsummaryrefslogtreecommitdiff
path: root/serveur git debian.txt
blob: 66bd535c10f951cea6faf2f58c0e33b9d757d65a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Serveur Git sur Debian

1/ Installer le paquet git.
On a aussi besoin du serveur ssh qu'on utilisera des deux manières (normale et en SFTP) et sans droit root (sauf pour l'installation là tout de suite).
On prévoira aussi des sauvegardes régulières, etc. Perdre du code, c'est moche.

2/ Créer un dossier pour git (avec mkdir), quelques suggestions:
/opt/git
/var/data/git
/home/git

La dernière commande possibilité concerne le cas (pas forcément souhaitable) où on crée un utilisateur nommé git (taper "adduser git"), dont le mot de passe sera connu de tous les utilisateurs.

J'ai choisi de le mettre dans /var/data parce que j'y ai déjà les données d'un site apache. Et puis c'est pas loind des sites web qui sont dans /var/www.

3/ Y créer un dossier pour le dépôt:
mkdir /var/data/git/my_repos.git

Je lui ai donné le nom "par convention": my_repos.git, bien que nommer les dépôts par projet ou par utilisateur me semblait plus logique. On pourra toujours en créer d'autre plus tard.

Mon but est d'atteindre un dossier ou un autre par une adresse du type: git.ordipolo.fr/nom_du_dépôt.
Il faudrait aussi que le dossier supporte deux types de clients git: l'appli console ou appli graphique normale et éventuellement plus tard un site apache/php.

4/ Concernant les droits, je ferais une suggestion: On a besoin que n'importe quel utilisateur puisse écrire dans my_repos.git, et notamment l'utilisateur du serveur apache "www-data". Ainsi par sécurité, on va cacher le dossier de niveau inférieur, ce qui nous fait:
chmod 711 /var/data/git
chmod 777 /var/data/git/my_repos.git
Les utilisateurs devraient ainsi pouvoir atteindre le dépôt et placer des projets.
Inconvénient: il faut être root pour créer un nouveau dépôt.

Ayant créé ces dossiers en tant que root, il reste bien le propriétaire des deux dossiers.

Nous pouvons maintenant nous déconnecter du compte root, taper "exit" ou faire un "Ctrl + d"

5/ Initialiser le dépôt depuis ssh
cd /var/data/git/my_repos.git
git init --bare

Noter bien le paramètre --bare qui sert à initialiser un projet vide.
C'est ce qu'il faut faire sur un serveur, on placera les fichiers dedans ensuite.
Un client n'a lui pas besoin de ce paramètre.

Si on ajoute --shared, le dossier est autorisé en écriture au groupe git.

Nous pouvons maintenant nous déconnecter si nous étions connecté avec ssh.
Le dépôt est utilisable par les clients.
Ils peuvent procéder comme avec n'importe quel serveur git.

6/ Création d'un dépôt local côté client.

Configuration prérequise (globale signifie pour tous dépôts):
git config --global user.name "mon nom"
git config --global user.email "mon_e-mail@exemple.com"
git config --global init.defaultBranch master

Un utilisateur crée un projet 'presque vide':
mkdir monprojet
cd monproject
git init
Ajouter au moins un fichier au projet (le push échoue à vide)
git add "fichier"
git commit -m 'première validation'
git remote add origin polo@ordipolo.fr:/var/data/git/tuto_git
git push origin master

Ce que tout le mode va faire ensuite:
git clone mon_nom@ordipolo.fr:/var/data/git/tuto_git
cd projet
nano "fichier"
git commit -am 'correction du fichier "fichier"'
git push origin master

Note: avec la syntaxe "polo@ordipolo.fr:/chemin/..." on comprend que ssh est utilisé.
C'est la méthode recommandée.
Autres méthodes:
- connexion locale avec le chemin sans l'identifiant et le nom du serveur: utile si on utilise NFS.
- connexion git: non sécurisée mais plus rapide, intéressant pour un dépôt public.

7/ Interface graphique

git est fourni avec une interface graphique nommée gitk.
Celle-ci ne démarre correctement:
- le paquet "tk" doit être installé sur le système
- l'application ne fonctionne pas dans un mauvais répertoire (elle n'explore pas),
	solution 1: lancer l'appli depuis le terminal placé dans le bon dossier
	solution 2: lancer l'appli depuis le terminal avec: gitk /chemin/du/dépot
	solution 3: créer un raccourci sur le bureau (un par projet) qui lance la commande ci-dessus

Dans cette fenêtre on peut donc voir l'historique des "commit", les branches, et à chaque fois le contenu des fichiers. Maj + F5 permet de mettre à jour le contenu si un fichier est modifié.

Aller ensuite dans le menu "Fichier" -> "Démarrer git gui"
Une deuxième fenêtre s'ouvre dans laquelle on peut agir avec trois boutons à utiliser dans l'ordre:
- indexer pour enregistrer les modifications dans les fichiers dans le "stage" (en gros l'emplacement des changements avant validation)
- commiter pour valider les changements en local
- pousser (ou push) pour enregistrer le dernier commit sur le serveur